package com.zenithmind.task.pojo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 任务评论VO类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
public class TaskCommentVO {

    /**
     * 评论ID
     */
    private String id;

    /**
     * 任务ID
     */
    private String taskId;

    /**
     * 父评论ID
     */
    private String parentId;

    /**
     * 根评论ID
     */
    private String rootId;

    /**
     * 评论层级
     */
    private Integer level;

    /**
     * 评论内容
     */
    private String content;

    /**
     * 评论类型：1-普通评论，2-状态变更，3-分配变更，4-进度更新，5-系统日志
     */
    private Integer commentType;

    /**
     * 评论类型文本
     */
    private String commentTypeText;

    /**
     * 评论者ID
     */
    private String commenterId;

    /**
     * 评论者名称
     */
    private String commenterName;

    /**
     * 评论者头像
     */
    private String commenterAvatar;

    /**
     * 被回复人ID
     */
    private String replyToId;

    /**
     * 被回复人名称
     */
    private String replyToName;

    /**
     * 提及的用户列表
     */
    private List<String> mentionedUsers;

    /**
     * 附件信息
     */
    private List<TaskAttachmentVO> attachments;

    /**
     * 点赞数
     */
    private Integer likeCount;

    /**
     * 回复数
     */
    private Integer replyCount;

    /**
     * 是否置顶
     */
    private Boolean isPinned;

    /**
     * 是否已编辑
     */
    private Boolean isEdited;

    /**
     * 编辑时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime editTime;

    /**
     * 是否已点赞
     */
    private Boolean isLiked;

    /**
     * 是否可编辑
     */
    private Boolean canEdit;

    /**
     * 是否可删除
     */
    private Boolean canDelete;

    /**
     * 状态：0-删除，1-正常，2-隐藏
     */
    private Integer status;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 子评论列表
     */
    private List<TaskCommentVO> replies;

    /**
     * 时间显示文本（如：刚刚、5分钟前等）
     */
    private String timeText;

    /**
     * 子评论列表（用于树形结构）
     */
    private List<TaskCommentVO> children;
}
